define(function (require, exports, module) {
    var myPub = require('./public');
    var oWindow = $(window);
    var oPsdFirstArea = $('.js_psdFirstArea');                  // 第一次输入密码点击区域
    var oPsdSecArea = $('.js_psdSecArea');                      // 第二次输入密码点击区域
    var oPsdFirstEntry = $('.js_psdFirstEntry');                // 第一次输入密码input框
    var oPsdSecEntry = $('.js_psdSecEntry');                    // 第二次输入密码input框
    var oFirstAreaDiv = $('.js_psdFirstArea div');              // 第一次输入密码显示框
    var oSecAreaDiv = $('.js_psdSecArea div');                  // 第二次输入密码显示框
    var oCashPsdErr = $('.js_cashPsdErr');                      // 提示框
    var oCompleteBtn = $('.js_completeBtn div');                // 完成按钮
    var boffTap = true;                                         // 阻止多次点击
    var moreTapOffTime = null;                                  // 多次点击定时器
    var bFirstNum = false;                                      // 第一次输入是否是纯数字
    var bFirstReoeat = false;                                   // 第一次输入是否是简单密码
    var bSecNum = false;                                        // 第二次输入是否是纯数字
    var bSecReoeat = false;                                     // 第二次输入是否是简单密码
    var bFirstInde = 0;                                         // 第一次输入的长度
    var bSecInde = 0;                                           // 第二次输入的长度

    var errorTip = [
        '请先输入6位数字密码',
        '请再次输入6位数字密码',
        '您输入的密码过于简单',
        '两次输入的密码不一致,请重新输入',
        '请点击完成按钮',
        '格式不正确，请输入数字密码'
    ];

    module.exports = {
        init: function () {
        }
    };

    // 点击第一个密码区域相应的input框获取焦点
    oPsdFirstArea.on('click',function(){
        oPsdFirstEntry.focus();
        oFirstAreaDiv.eq(bFirstInde).html('<em></em>');
    });

    // 点击第二个密码区域相应的input框获取焦点
    oPsdSecArea.on('click',function(){
        oPsdSecEntry.focus();
        oSecAreaDiv.eq(bSecInde).html('<em></em>');
    });

    // 第一次输入密码验证
    oPsdFirstEntry.on('input propertychange',function () {
        oFirstAreaDiv.html('');
        bFirstInde = oPsdFirstEntry.val().length;
        for(var i = 0;i<oPsdFirstEntry.val().length;i++){
             oFirstAreaDiv.eq(i).html('<i></i>');
            oFirstAreaDiv.eq(i+1).html('<em></em>');
        }

        if(oPsdFirstEntry.val().length == 0){
            oFirstAreaDiv.eq(0).html('<em></em>');
        }

        ValidationProgress(oPsdFirstEntry,function () { // 数字
            bFirstNum = true;
        },function () {
            bFirstNum = false;
            oCashPsdErr.text(errorTip[5]);
        });

        if(bFirstNum){
            if(oPsdFirstEntry.val().length === 6){
                ValidationComplate(oPsdFirstEntry,function () { // 2
                    bFirstReoeat = true;
                })
            }else{
                bFirstReoeat = false;
            }
        }

        if(bSecReoeat){
            if(bFirstReoeat){
                if(oPsdFirstEntry.val() === oPsdSecEntry.val()){
                    oCompleteBtn.addClass('active');
                    oCashPsdErr.text(errorTip[4]);
                }else{
                    oCashPsdErr.text(errorTip[3]);
                    oCompleteBtn.removeClass('active');
                }
            }else{
                if(oPsdFirstEntry.val().length === 6){
                    oCashPsdErr.text(errorTip[3]);
                }else{
                    oCashPsdErr.text(errorTip[1]);
                }
                oCompleteBtn.removeClass('active');
            }
        }else{
            if(bFirstReoeat){
                if(oPsdSecEntry.val().length != 6){
                    oCashPsdErr.text(errorTip[1]);
                }
                if(oPsdFirstEntry.val() === oPsdSecEntry.val()){
                    oCashPsdErr.text(errorTip[1]);
                }
            }
        }

        if(oPsdFirstEntry.val().length === 0){
            oCashPsdErr.text('');
        }

    });
    oPsdFirstEntry.on('blur',function () {
        PsdBlur(bFirstInde,oFirstAreaDiv);
    });
    // 第二次输入密码验证
    oPsdSecEntry.on('input propertychange',function () {
        oSecAreaDiv.html('');
        bSecInde = oPsdSecEntry.val().length;

        for(var i = 0;i<oPsdSecEntry.val().length;i++){
            oSecAreaDiv.eq(i).html('<i></i>');
            oSecAreaDiv.eq(i+1).html('<em></em>');
        }


        if(oPsdSecEntry.val().length == 0){
            oSecAreaDiv.eq(0).html('<em></em>');
        }

        ValidationProgress(oPsdSecEntry,function () { // 数字
            bSecNum = true;
        },function () {
            bSecNum = false;
            oCashPsdErr.text(errorTip[5]);
        });

        if(bSecNum){

            if(oPsdSecEntry.val().length === 6){
                ValidationComplate(oPsdSecEntry,function () {  // 2
                    bSecReoeat = true;
                })
            }else{
                bSecReoeat = false;
            }
        }

        if(bFirstReoeat){
            if(bSecReoeat){
                if(oPsdFirstEntry.val() === oPsdSecEntry.val()){
                    oCompleteBtn.addClass('active');
                    oCashPsdErr.text(errorTip[4]);
                }else{
                    oCashPsdErr.text(errorTip[3]);
                    oCompleteBtn.removeClass('active');
                }
            }else{
                if(oPsdSecEntry.val().length === 6){
                    oCashPsdErr.text(errorTip[3]);
                }else{
                    oCashPsdErr.text(errorTip[1]);
                }
                oCompleteBtn.removeClass('active');
            }
        }else{
            if(bSecReoeat){
                if(oPsdFirstEntry.val() === oPsdSecEntry.val()){
                    oCashPsdErr.text(errorTip[2]);
                }else{
                    oCashPsdErr.text(errorTip[3]);
                }
            }
        }
        // 当第二遍密码框位空时
        if(oPsdSecEntry.val().length === 0){
            oCashPsdErr.text('');
        }
    });
    oPsdSecEntry.on('blur',function () {
        PsdBlur(bSecInde,oSecAreaDiv);
    });
    // 点击确定按钮
    oCompleteBtn.on('click',function () {
        // 变亮状态
        if($(this).hasClass('active')){
            if(boffTap){
                boffTap = false;
                // 成功
                setPassword();
            }
        }

        clearTimeout(moreTapOffTime);
        moreTapOffTime = setTimeout(function () {
            boffTap = true;
        }, 500);
    });



    function setPassword(){
        $.ajax({
            url:'/prepaidCard/setPayPassword?passWord='+$(".js_psdSecEntry").val(),
            type:'GET',
            dataType:'json',
            success:function (data) {
                if(data.code =='1'){
                    myPub.TipLayer('设置成功','no',function () {
                        myPub.locationHref('/prepaidCard/index')
                    },3)
                }else{
                    myPub.TipLayer('设置失败,请稍后再试','no',function () {
                    },3)
                }
            },
            error:function (data) {
                console.log(data);
            }
        });
    }
    // 验证是否为6位重复数字 或者连续数字
    function ValidationComplate(obj,fn) {
        var count = 0;
        var numArr = String(obj.val());
        // 验证是否为重复数字
        var repeatReg = /(\d)\1{5}/g;
        if (repeatReg.test(obj.val())) {
            oCashPsdErr.text(errorTip[2]);
            return false
        }

        //判断是否为连续的6位数字
        for(var i = 0;i < 6;i++){
            // 前后ascii码差值绝对值为1表示连续
            if(Math.abs(numArr[i] - numArr[i-1])  === 1){
                count += 1;
            }
        }
        if(count === 5){
            oCashPsdErr.text(errorTip[2]);
            return false
        }
        if (fn) {fn()}
    }

    // 验证输入是否是数字
    function ValidationProgress(obj,fn1,fn2) {
        var reg = /^[0-9]+$/g;
        if (reg.test(obj.val())) {
            if (fn1) {fn1()}
        } else{
            if (fn2) {fn2()}
        }
    }

    // 失去焦点 失去光标
    function PsdBlur(n,obj) {
        if(n == 0){
            obj.eq(0).html('');
        }else{
            obj.eq(n).html('')
        }
    }

});